﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Model;
using Interfaces;

namespace Controller
{
    public class Controller
    {
        private DBFacade dbFacade;

        private HoldCol holdcol;

        private Hold holdSession;

        //hej hej
        public Controller()
        {
            holdcol = new HoldCol();
            dbFacade = new DBFacade();
        }
        #region hold
        //Metoder
        public Boolean OpretHold(int holdId, Ridningstype ridningstypeId, DateTime ugedag, DateTime startTid, DateTime slutTid, Person ridelære, int maksAntal, Holdpriser holdpriserId)
        {
            Hold hold = null;

            List<Person> staldpiger = new List<Person>();
            List<Person> medlemmer = new List<Person>();

            string sqlfejl = dbFacade.OpretHold(holdId, ridningstypeId.RidningstypeId, ugedag, startTid, slutTid, maksAntal, holdpriserId.HoldpriserId);
            if (sqlfejl == null)
            {
                hold = holdcol.OpretHold(holdId, ridningstypeId, ugedag, startTid, slutTid, ridelære, staldpiger, medlemmer, maksAntal, holdpriserId);
                return true;
            }
            else
                return false;
        }

        public Boolean TilknytStaldpige(Person staldpige, int personholdId, int holdId, int personId)
        {
            string sqlfejl = dbFacade.TilknytPerson(personholdId, holdId, personId);
            if (sqlfejl == null)
            {
                holdSession.TilknytStaldpige(staldpige);
                return true;
            }
            else
                return false;
        }

        public Boolean TilknytMedlem(Person medlem, int personholdId, int holdId, int personId)
        {
            string sqlfejl = dbFacade.TilknytPerson(personholdId, holdId, personId);
            if (sqlfejl == null)
            {
                holdSession.TilknytMedlem(medlem);
                return true;
            }
            else
                return false;
        }

        public Boolean SletHold(int holdId)
        {
            string sqlfejl = dbFacade.SletHold(holdId);
            if(sqlfejl == null)
            {
                holdcol.SletHold(holdId);
                return true;
            }
            else
                return false;
        }

        public Boolean RedigerHold(int holdId, DateTime ugedag, DateTime starttid, DateTime sluttid, int maksAntal, Holdpriser holdpriserId)
        {
            string sqlfejl = dbFacade.RedigerHold(holdId, ugedag, starttid, sluttid, maksAntal, holdpriserId.HoldpriserId);
            if (sqlfejl == null)
            {
                holdcol.RedigereHold(holdId, null, ugedag, starttid, sluttid, null, maksAntal, holdpriserId);
                return true;
            }
            else
                return false;
        }


        protected void setholdsession(int holdId)
        {
            if (holdSession != null)
                if (holdSession.HoldId == holdId)
                    return;
            holdSession = holdcol.getHoldIdx(holdId);
        }
        #endregion
    }
}
